using System;
using System.Collections.Generic;
using System.Text;

namespace MIS.EN.Exchange.Entities
{
    public class Task : Item
    {
        public Task()
            : this(false)
        {
        }

        internal Task(bool loadedFromServer)
            : base(loadedFromServer)
        {
        }

        public override string Name
        {
            get { return this.subject; }
        }

        private string billingInformation = string.Empty;

        public string BillingInformation
        {
            get { return this.billingInformation; }
            set
            {
                this.billingInformation = value;
                this.AddPropertyChanged("BillingInformation");
            }
        }

        private string companies = string.Empty;

        public string Companies
        {
            get { return this.companies; }
            set
            {
                this.companies = value;
                this.AddPropertyChanged("Companies");
            }
        }

        private DateTime? dueDate;

        public DateTime? DueDate
        {
            get { return this.dueDate; }
            set
            {
                this.dueDate = value;
                this.AddPropertyChanged("DueDate");
            }
        }

        private DateTime? startDate;

        public DateTime? StartDate
        {
            get { return this.startDate; }
            set
            {
                this.startDate = value;
                this.AddPropertyChanged("StartDate");
            }
        }

        private string mileage = string.Empty;

        public string Mileage
        {
            get { return this.mileage; }
            set
            {
                this.mileage = value;
                this.AddPropertyChanged("Mileage");
            }
        }

        private Sensitivity? sensitivity;

        public Sensitivity? Sensitivity
        {
            get { return this.sensitivity; }
            set
            {
                this.sensitivity = value;
                this.AddPropertyChanged("Sensitivity");
            }
        }

        private string subject = string.Empty;

        public string Subject
        {
            get { return this.subject; }
            set
            {
                this.subject = value;
                this.AddPropertyChanged("Subject");
            }
        }

        private string textDescription = string.Empty;

        public string TextDescription
        {
            get { return this.textDescription; }
            set
            {
                this.textDescription = value;
                this.AddPropertyChanged("TextDescription");
            }
        }

        private Double? percentComplete;

        public Double? PercentComplete
        {
            get { return this.percentComplete; }
            set
            {
                this.percentComplete = value;
                this.AddPropertyChanged("PercentComplete");
            }
        }

        private bool? complete;

        public bool? Complete
        {
            get { return this.complete; }
            set
            {
                this.complete = value;
                this.AddPropertyChanged("Complete");
            }
        }

        private DateTime? dateCompleted;

        public DateTime? DateCompleted
        {
            get { return this.dateCompleted; }
            set
            {
                this.dateCompleted = value;
                this.AddPropertyChanged("DateCompleted");
            }
        }

        private int? status;

        public int? Status
        {
            get { return this.status; }
            set
            {
                this.status = value;
                this.AddPropertyChanged("Status");
            }
        }

        private int? state;

        public int? State
        {
            get { return this.state; }
            set
            {
                this.state = value;
                this.AddPropertyChanged("State");
            }
        }

        private int? actualEffort;

        public int? ActualEffort
        {
            get { return this.actualEffort; }
            set
            {
                this.actualEffort = value;
                this.AddPropertyChanged("ActualEffort");
            }
        }

        private int? estimatedeffort;

        public int? EstimatedEffort
        {
            get { return this.estimatedeffort; }
            set
            {
                this.estimatedeffort = value;
                this.AddPropertyChanged("EstimatedEffort");
            }
        }

        private int? mode;

        public int? Mode
        {
            get { return this.mode; }
            set
            {
                this.mode = value;
                this.AddPropertyChanged("Mode");
            }
        }

        private int? reminderDelta;

        public int? ReminderDelta
        {
            get { return this.reminderDelta; }
            set
            {
                this.reminderDelta = value;
                this.AddPropertyChanged("ReminderDelta");
            }
        }

        private DateTime? reminderNextTime;

        public DateTime? ReminderNextTime
        {
            get { return this.reminderNextTime; }
            set
            {
                this.reminderNextTime = value;
                this.AddPropertyChanged("ReminderNextTime");
            }
        }

        private DateTime? reminderTime;

        public DateTime? ReminderTime
        {
            get { return this.reminderTime; }
            set
            {
                this.reminderTime = value;
                this.AddPropertyChanged("ReminderTime");
            }
        }

        private bool? reminderSet;

        public bool? ReminderSet
        {
            get { return this.reminderSet; }
            set
            {
                this.reminderSet = value;
                this.AddPropertyChanged("ReminderSet");
            }
        }
    }
}
